package com.sky.context;

public class BaseContext {
    /*
    ThreadLocal叫做线程变量，意思是ThreadLocal中填充的变量属于当前线程，该变量对其他线程而言是隔离的，
    也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本，
    那么每个线程可以访问自己内部的副本变量。

    我一开始觉得直接用一个变量存一下数据不久就行了嘛，但是如果客户端有多个就不行了，
    每一次请求都是一个单独的线程，线程之间会互相影响那个变量，而使用ThreadLocal就不会有
    这个问题，在ThreadLocal中存的值是属于这个线程的
     */


    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    public static Long getCurrentId() {
        return threadLocal.get();
    }

    public static void removeCurrentId() {
        threadLocal.remove();
    }

}
